As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
A key component of almost every information handling system is the basic input/output system (BIOS). A BIOS may be a system, device, or apparatus configured to identify, test, and/or initialize one or more information handling resources of an information handling system, typically during boot up or power on of an information handling system. A BIOS may include boot firmware configured to be the first code executed by a processor of an information handling system when the information handling system is booted and/or powered on. As part of its initialization functionality, BIOS code may be configured to set components of the information handling system into a known state, so that one or more applications (e.g., an operating system or other application programs) stored on compatible media may be executed by a processor and given control of the information handling system and its various components.
During boot time, a BIOS may be responsible for enumeration of information handling resources of the information handling system, including assigning identifying information for the information handling resources (e.g., bus/device/function numbers) and allocating memory-mapped input/output (MMIO) and legacy input/output (I/O) resources. On a cold boot (e.g., information handling system powered on after being powered off) a BIOS may reserve a default range of MMIO and legacy I/O to each processor socket. In some cases, the MMIO or legacy I/O capacity is not sufficient for a particular socket, as may be the case if resource-hungry devices (e.g., graphics processing units) are associated with such socket. BIOS must finish PCI enumeration, a point almost halfway through power-on self-test (POST), in order to discover the resource limitation. In many existing approaches, this would require the BIOS saving the new resource requirements in memory and performing a warm reboot of the information handling system. In the subsequent boot, the BIOS may use the resource requirements stored in memory to rebalance resources among the sockets, and re-initiate POST and enumeration. In addition, while BIOS may retain the resource requirements during subsequent warm boots, it may return to its default values on cold boots, meaning multiple boots may be required during each time power to an information handling system is cycled. Such rebooting may take significant time, and may lead to poor consumer experience.